widget-factory: Improve the theme selector
authorMatthias Clasen <mclasen@redhat.com>
Sat, 25 Apr 2020 01:12:20 +0000 (21:12 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 25 Apr 2020 01:12:20 +0000 (21:12 -0400)
Implement the "Current style" choice using
gtk_settings_reset_property, so we go back to
following the settings changes.

demos/widget-factory/widget-factory.c

index e1dd9aaac36417c61f21951b2115bafeebd8545e..f8c0b8622971c829d82f8b989c8446a0e2373382 100644 (file)
@@ -40,9 +40,6 @@ change_dark_state (GSimpleAction *action,
   g_simple_action_set_state (action, state);
 }
 
-static char *current_theme;
-static gboolean current_dark;
-
 static void
 change_theme_state (GSimpleAction *action,
                     GVariant      *state,
@@ -53,6 +50,8 @@ change_theme_state (GSimpleAction *action,
   const char *theme;
   gboolean prefer_dark = FALSE;
 
+  g_simple_action_set_state (action, state);
+
   s = g_variant_get_string (state, NULL);
 
   if (strcmp (s, "adwaita") == 0)
@@ -77,8 +76,9 @@ change_theme_state (GSimpleAction *action,
     }
   else if (strcmp (s, "current") == 0)
     {
-      theme = current_theme;
-      prefer_dark = current_dark;
+      gtk_settings_reset_property (settings, "gtk-theme-name");
+      gtk_settings_reset_property (settings, "gtk-application-prefer-dark-theme");
+      return;
     }
   else
     return;
@@ -87,8 +87,6 @@ change_theme_state (GSimpleAction *action,
                 "gtk-theme-name", theme,
                 "gtk-application-prefer-dark-theme", prefer_dark,
                 NULL);
-
-  g_simple_action_set_state (action, state);
 }
 
 static GtkWidget *page_stack;
@@ -1740,11 +1738,6 @@ activate (GApplication *app)
   GAction *action;
   GError *error = NULL;
 
-  g_object_get (gtk_settings_get_default (),
-                "gtk-theme-name", &current_theme,
-                "gtk-application-prefer-dark-theme", &current_dark,
-                NULL);
-
   g_type_ensure (my_text_view_get_type ());
 
   provider = gtk_css_provider_new ();